#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <pthread.h>

/*
pipe 函数：创建，并打开管道。
int pipe(int fd[2]);
参数： fd[0]: 读端。d[1]: 写端。
返回值： 成功：0 失败：-1 errno
*/
void sys_error(const char *msg)
{
    perror(msg);
    exit(1);
}

int main(int argc, char const *argv[])
{
    int ret;
    int fd[2];
    pid_t pid;

    char *msg = "hello";
    char buf[1024];
    ret = pipe(fd);
    if(ret == -1)
        sys_error("creat pipe error");

    pid = fork();
    if(pid == 0){ //子进程读
        close(fd[0]);
        write(fd[1], msg, sizeof(msg));
        close(fd[1]);
    }else{
        close(fd[1]);
        // sleep(1);
        // 有写端，read 阻塞等待。
        ret = read(fd[0], buf, sizeof(buf));
        write(STDOUT_FILENO, buf, ret);
        close(fd[0]);
    }

    return 0;
}
